Skip to content

Conversation

@timsaucer
Copy link
Member

@timsaucer timsaucer commented Feb 8, 2026

This PR is to improve our CI performance in a couple of ways

  • For PRs we can build in debug mode instead of release mode. For RC tags and pushes to main we still run in release mode.
  • This gives better debug if there are failures in CI and faster builds.
  • We will still catch any errors generated in release mode when the merge to main occurs.
  • At the same time, doing some minor cleanup of jobs that may no longer be necessary.
  • Upload only one artifact in debug mode, the linux x86 wheel used for pytests
  • Avoids rebuilding multiple times in test
  • Overall cuts down CI by about 30 minutes

…pushes to main and release or candidate tags.
@timsaucer timsaucer marked this pull request as ready for review February 9, 2026 20:34
Co-authored-by: Martin Grigorov <martin-g@users.noreply.github.com>
@timsaucer timsaucer requested a review from Copilot February 9, 2026 21:15
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR refactors CI to use reusable build/test workflows and to run PR builds in debug mode for faster feedback while keeping release-mode builds for main and tags.

Changes:

  • Split CI into reusable workflows (build.yml, test.yml) and added dedicated entry workflows for PRs (ci.yml) and releases (release.yml).
  • Updated test workflow to install and test against the pre-built Linux wheel artifact instead of rebuilding during tests.
  • CI/config formatting cleanups across TOML files and adjusted license generation to rely on cargo-license.

Reviewed changes

Copilot reviewed 9 out of 11 changed files in this pull request and generated 7 comments.

Show a summary per file
File Description
pyproject.toml Formatting cleanup and a dependency list syntax fix (trailing comma).
examples/datafusion-ffi-example/Cargo.toml TOML formatting cleanup for pyo3 features list.
examples/datafusion-ffi-example/.cargo/config.toml TOML formatting cleanup for rustflags.
dev/create_license.py Switches license generation to call cargo-license directly.
.github/workflows/test.yml Converts to reusable workflow and installs pre-built wheel artifacts for tests.
.github/workflows/release.yml Adds release entry workflow calling reusable build/test in release mode.
.github/workflows/ci.yml Adds PR entry workflow calling reusable build/test in debug mode.
.github/workflows/build.yml Converts to reusable workflow; adds linting jobs and reworks wheel build/artifact behavior.
.cargo/config.toml TOML formatting cleanup for rustflags.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

timsaucer and others added 2 commits February 9, 2026 16:57
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
@timsaucer timsaucer requested a review from martin-g February 9, 2026 22:40
Copy link
Member

@davisp davisp left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1

Overall everything looks fine and is straightforward. The only thought I had was the the build.yml workflows could maybe be condensed into a single parameterized matrix. Though that means that all the individual steps would end up requiring more parameterization which might turn out even more complicated than just repeated the same basic job multiple times.

branches:
- "main"
tags:
- "*-rc*" # Release candidates (e.g., 45.0.0-rc1)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we add the [0-9]+ prefix here?

"-C", "link-arg=-undefined",
"-C", "link-arg=dynamic_lookup",
]
rustflags = ["-C", "link-arg=-undefined", "-C", "link-arg=dynamic_lookup"]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure if we care, but near as I can tell, everything below here is just reformatting code.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added taplo to the checks is all, which requires reformatting

with:
target: x86_64-unknown-linux-gnu
manylinux: "2_28"
args: --release --strip --features protoc,substrait --out dist
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure if its important. but the linux wheels are built with the protoc feature enabled, but the windows and mac wheels don't include it.

Copy link
Member Author

@timsaucer timsaucer Feb 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is intentional. The linux builds use the protoc feature but that can fail the mac/windows builds so we use system proto.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants